package org.vineatoum.model.abstraction;

import java.util.List;

import org.vineatoum.business.Exploitation;
import org.vineatoum.business.Parcelle;
import org.vineatoum.business.Plantation;
import org.vineatoum.business.action.ActionDescriptor;
import org.vineatoum.business.action.abstraction.Action;
import org.vineatoum.business.configuration.Configuration;
import org.vineatoum.business.state.abstraction.VinAbstract;
import org.vineatoum.business.tracking.ITrackableElement;
import org.vineatoum.observer.IObservableAction;
import org.vineatoum.observer.IObservableChai;
import org.vineatoum.observer.IObservableConfiguration;
import org.vineatoum.observer.IObservableExploitation;

public interface IVineaToumModel extends IObservableAction, IObservableChai, IObservableExploitation, IObservableConfiguration {
	void updateExploitation(Exploitation exploitation);
	Exploitation getExploitation();
	
	void addPlantation(Plantation plantation);
	void addParcelle(Parcelle parcelle);
	
	void addCuve();
	
	List<ITrackableElement> getTracking(VinAbstract vin);
	
	void addAction(ActionDescriptor action);
	List<Action> getActions(VinAbstract vin);
	Configuration getConfiguration();
	void updateConfiguration(Configuration config);	
	
}
